$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Prvi program

Uobičajeno je da početnici prvo napišu program koji se zove "Hello World" (Zdravo svete), čiji je jedini zadatak da odštampa reči "Hello World" na ekran računara, pa ćemo kreirati upravo taj program. Pre nego što se pristupi programiranju, potrebno je da se definište kako konačno treba da izgleda program, a zatim i da se napravi plan koje koji precizira sve korake koje program treba da uradi da bi se postigao željeni rezultat. Ovaj postupak se zove razrada algoritma. U slučaju ovog jednostavnog programa, potreban je samo jedan korak: štampanje poruke na ekranu. Ovaj korak smo opisali rečenicom prirodnog jezika, ali postoji i grafički prikaz razrade algoritma koji se zove dijagram toka. Svi programi koje ćeš videti u narednim lekcijama će imati mnogo više koraka od ovog prvog primera i mnogi će biti i ilustrovani dijagramima toka.

Konzolna aplikacija Visual Studio može da se koristi za pravljenje različitih tipova aplikacija. U ovom priručniku mi ćemo kompajlirati i pokretati konzolne aplikacije.

Konzolne aplikacije su programi koji imaju samo tekstualnu interakciju sa korisnikom, dakle oni se prave samo uz upotrebu tastature i ekrana. Ovo se razlikuje od GUI (eng. Graphical User Interface - grafički korisnički interfejs) aplikacija koje podržavaju upotrebu miša ili nekog drugog uređaja za prikazivanje.

Da bi se prevela (kompajlirala) i izvršila jednostavna konzolna aplikacija u okruženju Visual Studio uradi sledeće:

File -> New -> Project...

Kada se otvori novi prozor na njegovoj levoj strani treba da se izabere Templates -> Visual C#, a u centralnom delu opcija Console Application:

Na dnu prozora postoji opcija za davanje imena projektu kao i za izbor lokacije na disku gde će biti smešteni svi fajlovi projekta. Podrazumevane opcije će poslužiti svrsi, ali one mogu i da se promene i prilagode. Podrazumevano je naziv prvog projekta ConsoleApplication1, drugog ConsoleApplication2, trećeg ConsoleApplication3, i tako redom. Lokacija za čuvanje projekata, osim ako se ne izmeni, je folder u okviru foldera Documents\Visual Studio 2015\Projects. Za svaki projekat se kreira poseban folder, a fajl u okviru tog foldera koji sadrži programski kod se zove Program.cs.

Potrebno je kliknuti [OK] nakon čega se otvara prostor za pisanje programskog koda. Naredbe pišemo unutar funkcije Main koja se pojavila. Posle otvorene vitičaste zagrade, u redu ispod reči Main je potrebno pritisnuti [Enter].

U prvom primeru ćemo na ovom mestu uneti samo jednu naredbu, iznad koje ćemo staviti jedan komentar:

//program prikazuje poruku
Console.WriteLine("Hello World!");

Funkcija Main sada izgleda ovako:

Pokretanje programa

Da bi kompajlirao i pokrenuo ovu aplikaciju, jednostavno na tastaturi pritisni Ctrl+F5. Možeš dalje da menjaš ovaj fajl koliko god želiš i koliko god ima potrebe. Okruženje je na početku podešeno tako da svaki put kada pokreneš izvršavanje programa, automatski sačuva (snimi) promene i kompajlira najnoviju verziju programa.

Struktura tvog prvog programa

Osvrnućemo se na strukturu upravo kreiranog programa koji štampa "Hello World" na ekran računara. Ovaj program smo već napisali u editoru. Iako je ovaj program jednostavan, sadrži sve bitne komponente C# programa.

Pogledajmo ceo program - i linije koje je okruženje samo kreiralo, i linije koje smo mi napisali. Uz svaku liniju je pridodat redni broj zbog objašnjenja koja slede. Ovi brojevi nisu deo programa.

 1. using System;
 2. using System.Collections.Generic;
 3. using System.Linq;
 4. using System.Text;
 5. using System.Threading.Tasks;
 6. 
 7. namespace ConsoleApplication1
 8. {
 9.    class Program
10.    {
11.        static void Main(string[] args)
12.        {
13.            //program prikazuje poruku
14.            Console.WriteLine("Hello World!");
15.        }
16.    }
17. }

Analiziraćemo ovaj program po linijama.

 1. using System;
 2. using System.Collections.Generic;
 3. using System.Linq;
 4. using System.Text;
 5. using System.Threading.Tasks;

U našem programu koristimo programski kod koji su napisali drugi programeri. Ovim linijama se našem programu dodaje deo koji je potreban da bi program za prevođenje razumeo naš program, konkretno liniju Console.WriteLine - ispis teksta.

 6. 

Prazne linije ne utiču na program, one jednostavno poboljšavaju čitljivost koda.

 7. namespace ConsoleApplication1

Naziv celog projekta, tj. aplikacije koju kreiramo je ConsoleApplication1.

 8. {

Otvorena vitičasta zagrada "{" označava početak jednog dela programa. Svaka otvorena vitičasta zagrada mora da ima svoju zatvorenu. Zatvorena vitičasta zagrada koja odgovara ovoj otvorenoj nalazi se u redu 17. Zatvorena vitičasta zagrada koja odgovara otvorenoj u redu 10, nalazi se u redu 16. Treći par zagrada u ovom primeru čine otvorena u redu 12. i zatvorena u redu 15.

 9. class Program

Jezik C# je objektno-orijentisan i u takvim jezicima radimo sa klasama (class) i njihovim objektima. Kako tema ovog kursa nisu koncepti objektno-orijantisanog programiranja, o ovome nećemo detaljnije pričati. Ne brini, u ovom trenutku nema potrebe da se baviš pitanjima objektno-orijentisanog programiranja. Za potrebe ovog kursa dovoljno je da znaš da je C# objektno-orijentisan programski jezik.

11. static void Main(string[] args)

Ova linija predstavlja deklaraciju funkcije. Funkcije se u objektno-orijentisanim jezicima nazivaju metode. Funkcija predstavlja grupu programskih naredbi kojima se daje ime, u ovom slučaju ime funkcije je "Main". O funkcijama ćemo detaljno pisati u jednoj od kasnijih lekcija, za sada je bitno da se zna da definicija funkcije počinje sa tipom podataka koji funkcija vraća (void), imenom (Main) i parom zagrada "()" između kojih su ulazni parametri, ako ih ima. Funkcija pod nazivom Main (glavna) je specijalna funkcija koja se poziva kada se pokrene program. Izvršavanje svih programa počinje sa Main funkcijom, bez obzira gde se ta funkcija u kodu nalazi (na početku, u sredini ili na kraju).

13. //program prikazuje poruku

U liniji 13. nalazi se komentar. Programeri koriste komentare da ostave kratka objašnjenja ili zapažanja koja se tiču programa. Kako kompajleri obično ignorišu komentare, oni ni na koji način ne utiču na rezultat izvršavanja koda. Programi rade potpuno isto i sa i bez komentara, samo su bez njih manje razumljivi ljudima koji čitaju kod. Početak komentara se obeležava sa "//". Komentar se završava krajem reda.

14. Console.WriteLine("Hello World!");

Ova linija predstavlja jednu C# komandu, odnosno naredbu. Komanda je izraz koji može proizvesti neki efekat. Program se kreira navođenjem komandi koje definišu njegovo pravo ponašanje. Komande se izvršavaju u istom redosledu u kome su napisane u okviru tela funkcije. Ova komanda ima dva dela. Prvi je naziv funkcije koju pozivamo za prikaz teksta na standardnom izlazu, tj. izlazu konzole koji je obično ekran računara (Console.WriteLine). Drugi je rečenica u okviru navodnika ("Hello world!") koja je sadržaj koji će biti ubačen/ispisan na standardni izlaz. Možeš da primetiš da se komanda završava sa znakom ";". Ovaj karakter označava kraj naredbe, kao što tačka označava kraj rečenice u srpskom jeziku. Sve naredbe moraju se završiti sa ";". Jedna od najčešćih sintaksnih grešaka se javlja usled zaboravljanja da se izraz završi sa ";". Više o greškama naučićeš u sledećim poglavljima.

Možeš da primetiš da ne utiču sve linije ovog programskog koda na samo izvršenje programa. Postoje linije koje sadrže komentare (počinju sa //) i linije sa uputstvima programu za prevođenje (počinju sa "using"). Postoji i linija koja definiše Main funkciju. I na kraju linija sa naredbom koja se završava sa ";" (i vrši ispis na ekran),  koja se nalazi u okviru bloka označenog vitičastim zagradama funkcije Main

Odvajanje naredbi se vrši uz pomoć ";", a razdvajanje u različite linije ne koristi se u ovu svrhu. Više naredbi se može napisati u okviru samo jedne linije, ili se svaka naredba može pisati u novoj liniji. Razdvajanje koda po različitim linijama služi da ljudima olakša čitanje koda i nema nikakvog uticaja na samo ponašanje programa. Isti je slučaj i sa pravilnim uvlačenjem komandi (eng. indent).

Hajde da sada dodamo još jednu komandu našem prvom programu:

static void Main(string[] args)
{
    //program prikazuje dve poruke
    Console.WriteLine("Hello World!");
    Console.WriteLine("I'm a C# program");
}

U ovom slučaju, program izvršava dva ispisa na ekran u dve različite naredbe. Od sada ćemo da prikazujemo sadržaj Main funkcije zato što nam je to dovoljno za razumevanje i kreiranje programa, dok su ostale linije uvek iste.

Komentari

Kao što smo pomenuli ranije, komentari ne utiču na izvršavanje programa. Međutim, komentari pružaju način da u sred koda dokumentujemo/objasnimo šta i kako naš program radi. Postoje dva načina komentarisanja koda:

LinijaEditor
1// linijski komentar
2/* blok komentara */

Linijski komentar odbacuje/zanemaruje sve od iza para znakova za deljenje "//" pa do kraja te linije. 

Blok komentar odbacuje/zanemaruje sve između "/" karaktera i prvog pojavljivanja "/" karaktera, sa mogućnošću uključivanja više linija.

Hajde da dodamo još neke komentare našem drugom programu: 

static void Main(string[] args)
{
    /*moj drugi C# program
    koji prikazuje dve poruke*/

    Console.WriteLine("Hello World!"); //prva poruka
    Console.WriteLine("I'm a C# program"); //druga poruka
}

Ukoliko komentare uključimo u program bez navedene dve kombinacije karaktera // ili /*  */ kompajler će ih smatrati za izraze, što će vrlo verovatno uzrokovati da kompajliranje bude neuspešno sa jednom ili više poruka o grešci.